package com.ethink.warehouse.api.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
import java.util.List;

/**
 * 仓库出库单 新增请求对象
 *
 * @author default
 * @date 2022-12-05
 */
@Data
public class StockOutOrderAddRequest {

    @Schema(description ="原单据号")
    private String orderNo;

    @Schema(description ="外部仓储出库单号")
    private String outOrderNo;

    @Schema(description ="货主编码")
    private String ownerCode;

    @Schema(description ="枚举 入库类型: 1-普通出库(t1)|2-调拨出库(t2)|3-B2B出库(t3)|4-其他出库(t4)|5-采购退货出库(t5)|6-虚拟出库单(t6)|7-唯品出库(t7)")
    private Integer outStockType;

    @Schema(description ="枚举 入库状态: 1-未开始处理(new)|2-仓库接单(accept)|3-部分发货完成(part_in)|4-发货完成(full_in)|5-异常(exception)|6-取消(cancel)|7-关闭(close)|8-拒单(reject)|8-取消失败(cancel_fail)")
    private Integer outStockStatus;

    @Schema(description ="要求出库时间")
    private Date scheduleTime;

    @Schema(description ="完成时间")
    private Date orderConfirmTime;

    private List<MateItem> items;

    @Data
    public static class MateItem {

        @Schema(description ="原单据号")
        private String orderNo;

        @Schema(description ="出库单的行号")
        private String orderDetailNo;

        @Schema(description ="外部仓储出库单号")
        private String outOrderNo;

        @Schema(description ="商品SKU")
        private String mateSku;

        @Schema(description ="外部仓储商品ID")
        private String mateItemId;

        @Schema(description ="枚举 库存类型: 1-正品(zp)|2-残次(cc)|3-机损(js)|4-箱损(xs)")
        private Integer inventoryType;

        @Schema(description ="计划出库数量")
        private Integer planQty;

    }

}
